package com.scott.ch160;

import com.scott.ch160.entity.Baby;
import com.scott.ch160.entity.Child;
import com.scott.ch160.entity.Parent;

import java.util.ArrayList;
import java.util.List;

/**
 * @author 黄后林
 * @version 1.0
 * @note
 * @date 2021-12-18 23:12:54
 */
public class Client {

    public static void main(String[] args) {

        List<Parent> parents  = new ArrayList<>();
        parents.add(new Parent());

        List<Child>  children = new ArrayList<>();
        children.add(new Child());

        List<Baby>   babies   = new ArrayList<>();
        babies.add(new Baby());


        print(parents);
        print(children);

        // 放开注释就会报错哦 泛型统配符的下限 只能是Child或者Child的父类
        // print(babies);

    }


    // 泛型统配符的下限 只能是Child或者Child的父类 而Object是所有类的父类
    public static  void print(List<? super Child> list){
        // 1、使用泛型统配符的下限后、集合中可以再添加元素

        // 2、只能添加Child或者Child的子类
        // list.add(new Parent());
        list.add(new Child());
        list.add(new Baby());


        for (Object object : list) {
            System.out.println(object);
        }
    }

}
